package com.yanyu.space.codegen.bean.vo.attr;

import cn.hutool.core.map.MapUtil;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 代码生成参数
 *
 * @author yanyu
 * @date 2020/12/1
 */
@Data
public class TemplateAttr {

    /**
     * java包名
     */
    private String javaPackageName;

    /**
     * java模块名
     */
    private String javaModuleName;

    /**
     * java Bean名字
     */
    private String javaBeanName;

    /**
     * java Bean小写的名字
     */
    private String lowJavaBeanName;

    /**
     * 作者
     */
    private String author;

    /**
     * 日期 2020/01/01
     */
    private String date;

    /**
     * 表描述
     */
    private String tableDesc;

    /**
     * 表名
     */
    private String tableName;


    /**
     * javaBean 名字
     */
    private List<TableColumnAttr> tableColumns;

    /**
     * 自定义属性
     */
    private Map<String,Object> customAttrs;

    public TableColumnAttr buildTableColumns(String attrType, String attrName, String attrDesc, String columnName) {
        return new TableColumnAttr(attrType, attrName, attrDesc, columnName);
    }

    public void appendCustomAttrs(String attrName, Object attrValue) {
        if(MapUtil.isEmpty(customAttrs)) {
            customAttrs = new HashMap<>();
        }
        customAttrs.put(attrName, attrValue);
    }

    @Data
    @AllArgsConstructor
    public class TableColumnAttr {
        /**
         * 属性类型
         */
        private String attrType;
        /**
         * 属性名
         */
        private String attrName;
        /**
         * 描述
         */
        private String attrDesc;
        /**
         * 表字段列名
         */
        private String columnName;
    }
}
